# This Python file uses the following encoding: utf-8
from utils import tools
from django.utils.datetime_safe import date
from django.db.models import Count
from utils.tools import classebuida
from django.core.urlresolvers import resolve, reverse

def dades_basiques(request):

    (user, l4) = tools.getImpersonateUser(request)
    sessioImpersonada = tools.sessioImpersonada(request)
    
    nMissatges= None
    try:
        nMissatges = user.destinatari_set.filter( moment_lectura__isnull = True ).count()
    except:
        pass

    teExpulsionsSenseTramitar= False
    try:
        from usuaris.models import User2Professor
        professor = User2Professor( user )
        teExpulsionsSenseTramitar = professor.expulsio_set.exclude( tramitacio_finalitzada = True ).count() > 0
    except:
        pass
   
    if not teExpulsionsSenseTramitar:
        try:
            from usuaris.models import User2Professional
            from alumnes.models import Alumne
            professional = User2Professional( user )
            teExpulsionsSenseTramitar = ( Alumne
                                          .objects
                                          .order_by()
                                          .filter( incidencia__professional = professional, 
                                                   incidencia__es_informativa = False, 
                                                   incidencia__es_vigent = True )
                                          .annotate( n = Count( 'incidencia' ) )
                                          .filter( n__gte = 3 )
                                          .exists()
                                        )
        except:
            pass      
    
    hiHaUnaQualitativaOberta = False
    try:
        from avaluacioQualitativa.models import AvaluacioQualitativa
        hiHaUnaQualitativaOberta = AvaluacioQualitativa.objects.filter(  data_obrir_avaluacio__lte =  date.today(),
                                                                         data_tancar_avaluacio__gte = date.today() ).exists()
    except:
        pass
        
    return {
            'data': date.today(),
            'user': user,
            'l4': l4,
            'sessioImpersonada': sessioImpersonada,
            'missatgesSenseLlegir': nMissatges,
            'teExpulsionsSenseTramitar': teExpulsionsSenseTramitar,
            'hiHaUnaQualitativaOberta': hiHaUnaQualitativaOberta,
            'menu': calcula_menu( user, request.path_info ),
             }
    
def calcula_menu( user , path ):
    
    nom_path = resolve( path ).url_name
    
    menu_id, submenu_id = nom_path.split( '__' )[:2]
    
    menu = { 'items':[], 'subitems':[] }
    
    #Aula-------------------------------------
    item = classebuida()
    
    actiu = ( menu_id == 'aula' )
    item.label = "Aula"
    item.url = "/"
    item.active = 'active' if actiu else ''
    menu['items'].append( item )
    
    if actiu:
        subitems = (
                      ("Presencia", 'aula__horari__horari' ),
                      ("Incidències", 'aula__incidencies__les_meves_incidencies' ),
                    )
        
        for label, url_v in subitems:
            subitem = classebuida()
            subitem.label = label
            subitem.url = reverse( url_v ) 
            subitem.active = 'active' if submenu_id == url_v.split('__')[1] else ''
            menu['subitems'].append(subitem)
    

    #Tutoria-------------------------------------
    item = classebuida()
    
    actiu = ( menu_id == 'tutoria' )
    item.label = "Tutoria"
    item.url = r"/tutoria/lesMevesActuacions/"   #TODO: canviar-ho per estat tutoria
    item.active = 'active' if actiu else ''
    menu['items'].append( item )

    if actiu:
        subitem = classebuida()
        subitem.label = "Actuacions"
        subitem.url = r"/tutoria/lesMevesActuacions/"
        subitem.active = 'active' if submenu_id == 'actuacions' else ''
        menu['subitems'].append(subitem)
        
        subitem = classebuida()
        subitem.label = "Justificar"
        subitem.url = r"/tutoria/justificaFaltesPre/"
        subitem.active = 'active' if submenu_id == 'justificar' else ''
        menu['subitems'].append(subitem)


    return menu
        
        
'''
administracio__configuracio__assigna_franges_kronowin
administracio__configuracio__assigna_grups
administracio__configuracio__assigna_grups_kronowin
administracio__professorat__reset_passwd
administracio__sincronitza__duplicats
administracio__sincronitza__fusiona
administracio__sincronitza__kronowin
administracio__sincronitza__regenerar_horaris
adminitracio__sincronitza__saga
aula__assistencia__llistat
aula__assistencia__llistat_entre_dates
aula__horari__afegir_alumnes
aula__horari__afegir_guardia
aula__horari__alumnes_i_assignatures
aula__horari__elimina_incidencia
aula__horari__esborrar_guardia
aula__horari__feina
aula__horari__horari
aula__horari__horari
aula__horari__hora_sense_alumnes
aula__horari__materies__calculadora_uf
aula__horari__passa_llista
aula__horari__posa_incidencia
aula__horari__treure_alumnes
aula__incidencies__edita_expulsio
aula__incidencies__elimina_incidencia
aula__incidencies__les_meves_incidencies
aula__incidencies__posa_expulsio
aula__incidencies__posa_expulsio_per_acumulacio
aula__incidencies__posa_expulsio_w2
aula__incidencies__posa_incidencia
aula__qualitativa__entra_qualitativa
aula__qualitativa__les_meves_avaulacions_qualitatives
aula__qualitativa__resultats_qualitatives
coordinacio_alumnes__assistencia__cartes
coordinacio_alumnes__explusions_centre__carta
coordinacio_alumnes__explusions_centre__edicio
coordinacio_alumnes__explusions_centre__esborrar
coordinacio_alumnes__explusions_centre__expulsar
coordinacio_alumnes__explusions_centre__expulsio
coordinacio_alumnes__explusions_centre__expulsio
coordinacio_alumnes__explusions_centre__expulsions
coordinacio_alumnes__explusions_centre__expulsions
coordinacio_alumnes__explusions_centre__expulsions_excel
coordinacio_alumnes__presencia__passa_llista_a_un_grup_tria
coordinacio_alumnes__ranking
coordinacio_alumnes__seguiment_tutorial__preguntes
coordinacio_pedagogica__qualitativa__avaluacions
coordinacio_pedagogica__qualitativa__items
coordinacio_pedagogica__qualitativa__report
nologin__usuari__login
nologin__usuari__recover_password
nologin__usuari__send_pass_by_email
obsolet__tria_alumne
professorat__baixes__complement_formulari_impressio_tria
professorat__baixes__complement_formulari_imprimeix
professorat__baixes__complement_formulari_omple
professorat__baixes__complement_formulari_tria
professorat__professors__list
professorat__tutors__gestio_alumnes_tutor
professorat__tutors__tutors_grups
professorat__tutors__tutors_individualitzats
psico__informes_alumne
relacio_families__configuracio__canvi_parametres
'relacio_families__informe__el_meu_informe'),
relacio_families__informe__el_meu_informe
triaAlumneAlumneAjax
triaAlumneCursAjax
triaAlumneGrupAjax
tutoria__actuacions__alta
tutoria__actuacions__edicio
tutoria__actuacions__esborrat
tutoria__actuacions__list
tutoria__actuacions__list_entre_dates
tutoria__alumne__detall
tutoria__alumne__informe_faltes_incidencies
tutoria__alumne__informe_setmanal
tutoria__alumne__informe_setmanal_print
tutoria__alumnes__list
tutoria__cartes_assistencia__esborrar_carta
tutoria__cartes_assistencia__gestio_cartes
tutoria__cartes_assistencia__imprimir_carta
tutoria__cartes_assistencia__imprimir_carta_no_flag
tutoria__cartes_assistencia__nova_carta
tutoria__justificar__by_pk_and_date
tutoria__justificar__justificador
tutoria__justificar__next
tutoria__justificar__pre_justificar
tutoria__obsolet__treure
tutoria__relacio_families__bloqueja_desbloqueja
tutoria__relacio_families___configura_connexio
tutoria__relacio_families__dades_relacio_families
tutoria__relacio_families__envia_benvinguda
tutoria__seguiment_tutorial__formulari
usuari__dades__canvi
usuari__dades__canvi_passwd
usuari__impersonacio__impersonacio
usuari__impersonacio__reset
varis__todo__del
varis__todo__edit
varis__todo__edit_by_pk
varis__todo__list
'''
        
                
        
        
